﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using Teigha.Core;

namespace Teigha.TD
{
	public class OdDbMentalRayRenderSettings : OdDbRenderSettings
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdDbMentalRayRenderSettings(IntPtr cPtr, bool cMemoryOwn) : base(TD_DbPINVOKE.OdDbMentalRayRenderSettings_SWIGUpcast(cPtr), cMemoryOwn)
		{
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdDbMentalRayRenderSettings obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdDbMentalRayRenderSettings()
		{
			this.Dispose();
		}

		public override void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							TD_DbPINVOKE.delete_OdDbMentalRayRenderSettings(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
			base.Dispose();
		}

		public new static OdDbMentalRayRenderSettings cast(OdRxObject pObj)
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = TD_DbPINVOKE.OdDbMentalRayRenderSettings_cast(OdRxObject.getCPtr(pObj));
			OdDbMentalRayRenderSettings result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdDbMentalRayRenderSettings)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdDbMentalRayRenderSettings)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdDbMentalRayRenderSettings)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new static OdRxClass desc()
		{
			OdRxClass result = (OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(TD_DbPINVOKE.OdDbMentalRayRenderSettings_desc(), false);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdRxClass isA()
		{
			OdRxClass result = (OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(TD_DbPINVOKE.OdDbMentalRayRenderSettings_isA(this.swigCPtr), false);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdRxObject queryX(OdRxClass protocolClass)
		{
			OdRxObject result = Teigha.Core.Helpers.odrxCreateObjectInternal(TD_DbPINVOKE.OdDbMentalRayRenderSettings_queryX(this.swigCPtr, OdRxClass.getCPtr(protocolClass)), false);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new static OdDbMentalRayRenderSettings createObject()
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = TD_DbPINVOKE.OdDbMentalRayRenderSettings_createObject();
			OdDbMentalRayRenderSettings result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdDbMentalRayRenderSettings)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdDbMentalRayRenderSettings)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdDbMentalRayRenderSettings)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setSampling(int min, int max)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setSampling(this.swigCPtr, min, max);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void sampling(out int min, out int max)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_sampling(this.swigCPtr, out min, out max);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdResult setSamplingFilter(OdGiMrFilter filter, double width, double height)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setSamplingFilter(this.swigCPtr, (int)filter, width, height);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void SamplingFilter(out OdGiMrFilter filter, out double width, out double height)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_SamplingFilter(this.swigCPtr, out filter, out width, out height);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdResult setSamplingContrastColor(float red, float green, float blue, float alpha)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setSamplingContrastColor(this.swigCPtr, red, green, blue, alpha);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void samplingContrastColor(SWIGTYPE_p_float red, SWIGTYPE_p_float green, SWIGTYPE_p_float blue, SWIGTYPE_p_float alpha)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_samplingContrastColor(this.swigCPtr, SWIGTYPE_p_float.getCPtr(red), SWIGTYPE_p_float.getCPtr(green), SWIGTYPE_p_float.getCPtr(blue), SWIGTYPE_p_float.getCPtr(alpha));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void setShadowMode(OdGiMrShadowMode shadowMode)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setShadowMode(this.swigCPtr, (int)shadowMode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiMrShadowMode shadowMode()
		{
			OdGiMrShadowMode result = (OdGiMrShadowMode)TD_DbPINVOKE.OdDbMentalRayRenderSettings_shadowMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setShadowMapsEnabled(bool shadowMapsEnabled)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setShadowMapsEnabled(this.swigCPtr, shadowMapsEnabled);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool shadowMapsEnabled()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_shadowMapsEnabled(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setRayTracingEnabled(bool rayTracingEnabled)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setRayTracingEnabled(this.swigCPtr, rayTracingEnabled);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool rayTracingEnabled()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_rayTracingEnabled(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setRayTraceDepth(int reflection, int refraction, int sum)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setRayTraceDepth(this.swigCPtr, reflection, refraction, sum);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void rayTraceDepth(out int reflection, out int refraction, out int sum)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_rayTraceDepth(this.swigCPtr, out reflection, out refraction, out sum);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void setGlobalIlluminationEnabled(bool globalIlluminationEnabled)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setGlobalIlluminationEnabled(this.swigCPtr, globalIlluminationEnabled);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool globalIlluminationEnabled()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_globalIlluminationEnabled(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setGISampleCount(int numPhotons)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setGISampleCount(this.swigCPtr, numPhotons);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public int giSampleCount()
		{
			int result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_giSampleCount(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setGISampleRadiusEnabled(bool giSampleRadiusEnabled)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setGISampleRadiusEnabled(this.swigCPtr, giSampleRadiusEnabled);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool giSampleRadiusEnabled()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_giSampleRadiusEnabled(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setGISampleRadius(double radius)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setGISampleRadius(this.swigCPtr, radius);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public double giSampleRadius()
		{
			double result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_giSampleRadius(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setGIPhotonsPerLight(int numPhotons)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setGIPhotonsPerLight(this.swigCPtr, numPhotons);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public int giPhotonsPerLight()
		{
			int result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_giPhotonsPerLight(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setPhotonTraceDepth(int reflection, int refraction, int sum)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setPhotonTraceDepth(this.swigCPtr, reflection, refraction, sum);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void photonTraceDepth(out int reflection, out int refraction, out int sum)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_photonTraceDepth(this.swigCPtr, out reflection, out refraction, out sum);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void setFinalGatheringEnabled(bool finalGatheringEnabled)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setFinalGatheringEnabled(this.swigCPtr, finalGatheringEnabled);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool finalGatheringEnabled()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_finalGatheringEnabled(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setFGRayCount(int fgRayCount)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setFGRayCount(this.swigCPtr, fgRayCount);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public int fgRayCount()
		{
			int result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_fgRayCount(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setFGRadiusState(bool useMin, bool useMax, bool inPixels)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setFGRadiusState(this.swigCPtr, useMin, useMax, inPixels);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void fgSampleRadiusState(out bool useMin, out bool useMax, out bool inPixels)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_fgSampleRadiusState(this.swigCPtr, out useMin, out useMax, out inPixels);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdResult setFGSampleRadius(double minRadius, double maxRadius)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setFGSampleRadius(this.swigCPtr, minRadius, maxRadius);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void fgSampleRadius(out double minRadius, out double maxRadius)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_fgSampleRadius(this.swigCPtr, out minRadius, out maxRadius);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdResult setEnergyMultiplier(float energyMultiplier)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setEnergyMultiplier(this.swigCPtr, energyMultiplier);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public float energyMultiplier()
		{
			float result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_energyMultiplier(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setDiagnosticMode(OdGiMrDiagnosticMode diagnosticMode)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setDiagnosticMode(this.swigCPtr, (int)diagnosticMode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiMrDiagnosticMode diagnosticMode()
		{
			OdGiMrDiagnosticMode result = (OdGiMrDiagnosticMode)TD_DbPINVOKE.OdDbMentalRayRenderSettings_diagnosticMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setDiagnosticGridMode(OdGiMrDiagnosticGridMode diagnosticGridMode, float gridSpace)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setDiagnosticGridMode(this.swigCPtr, (int)diagnosticGridMode, gridSpace);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void diagnosticGridMode(SWIGTYPE_p_OdGiMrDiagnosticGridMode diagnosticGridMode, SWIGTYPE_p_float gridSpace)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_diagnosticGridMode(this.swigCPtr, SWIGTYPE_p_OdGiMrDiagnosticGridMode.getCPtr(diagnosticGridMode), SWIGTYPE_p_float.getCPtr(gridSpace));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public void setDiagnosticPhotonMode(OdGiMrDiagnosticPhotonMode diagnosticPhotonMode)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setDiagnosticPhotonMode(this.swigCPtr, (int)diagnosticPhotonMode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiMrDiagnosticPhotonMode diagnosticPhotonMode()
		{
			OdGiMrDiagnosticPhotonMode result = (OdGiMrDiagnosticPhotonMode)TD_DbPINVOKE.OdDbMentalRayRenderSettings_diagnosticPhotonMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setDiagnosticSamplesMode(bool diagnosticSamplesMode)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setDiagnosticSamplesMode(this.swigCPtr, diagnosticSamplesMode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool diagnosticSamplesMode()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_diagnosticSamplesMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setDiagnosticBSPMode(OdGiMrDiagnosticBSPMode diagnosticBSPMode)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setDiagnosticBSPMode(this.swigCPtr, (int)diagnosticBSPMode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiMrDiagnosticBSPMode diagnosticBSPMode()
		{
			OdGiMrDiagnosticBSPMode result = (OdGiMrDiagnosticBSPMode)TD_DbPINVOKE.OdDbMentalRayRenderSettings_diagnosticBSPMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setExportMIEnabled(bool exportMIEnabled)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setExportMIEnabled(this.swigCPtr, exportMIEnabled);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public bool exportMIEnabled()
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_exportMIEnabled(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setExportMIFileName(string filename)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setExportMIFileName(this.swigCPtr, filename);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public string exportMIFileName()
		{
			string result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_exportMIFileName(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setTileSize(int tileSize)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setTileSize(this.swigCPtr, tileSize);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public int tileSize()
		{
			int result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_tileSize(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public void setTileOrder(OdGiMrTileOrder tileOrder)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_setTileOrder(this.swigCPtr, (int)tileOrder);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public OdGiMrTileOrder tileOrder()
		{
			OdGiMrTileOrder result = (OdGiMrTileOrder)TD_DbPINVOKE.OdDbMentalRayRenderSettings_tileOrder(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setMemoryLimit(int memoryLimit)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setMemoryLimit(this.swigCPtr, memoryLimit);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public int memoryLimit()
		{
			int result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_memoryLimit(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setFinalGatheringMode(OdGiMrFinalGatheringMode mode)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setFinalGatheringMode(this.swigCPtr, (int)mode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdGiMrFinalGatheringMode finalGatheringMode()
		{
			OdGiMrFinalGatheringMode result = (OdGiMrFinalGatheringMode)TD_DbPINVOKE.OdDbMentalRayRenderSettings_finalGatheringMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setLightLuminanceScale(double fLuminance)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setLightLuminanceScale(this.swigCPtr, fLuminance);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public double lightLuminanceScale()
		{
			double result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_lightLuminanceScale(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setExportMIMode(OdGiMrExportMIMode eExportMIMode)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setExportMIMode(this.swigCPtr, (int)eExportMIMode);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdGiMrExportMIMode exportMIMode()
		{
			OdGiMrExportMIMode result = (OdGiMrExportMIMode)TD_DbPINVOKE.OdDbMentalRayRenderSettings_exportMIMode(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdResult setShadowSamplingMultiplier(OdDbMentalRayRenderSettings.ShadowSamplingMultiplier multiplier)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_setShadowSamplingMultiplier(this.swigCPtr, (int)multiplier);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public OdDbMentalRayRenderSettings.ShadowSamplingMultiplier shadowSamplingMultiplier()
		{
			OdDbMentalRayRenderSettings.ShadowSamplingMultiplier result = (OdDbMentalRayRenderSettings.ShadowSamplingMultiplier)TD_DbPINVOKE.OdDbMentalRayRenderSettings_shadowSamplingMultiplier(this.swigCPtr);
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdResult dwgInFields(OdDbDwgFiler pFiler)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_dwgInFields(this.swigCPtr, OdDbDwgFiler.getCPtr(pFiler));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual void dwgOutFields(OdDbDwgFiler pFiler)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_dwgOutFields(this.swigCPtr, OdDbDwgFiler.getCPtr(pFiler));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual OdResult dxfInFields(OdDbDxfFiler pFiler)
		{
			OdResult result = (OdResult)TD_DbPINVOKE.OdDbMentalRayRenderSettings_dxfInFields(this.swigCPtr, OdDbDxfFiler.getCPtr(pFiler));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual void dxfOutFields(OdDbDxfFiler pFiler)
		{
			TD_DbPINVOKE.OdDbMentalRayRenderSettings_dxfOutFields(this.swigCPtr, OdDbDxfFiler.getCPtr(pFiler));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public new virtual uint subSetAttributes(OdGiDrawableTraits pTraits)
		{
			uint result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_subSetAttributes(this.swigCPtr, OdGiDrawableTraits.getCPtr(pTraits));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual bool IsEqual(OdDbMentalRayRenderSettings settings)
		{
			bool result = TD_DbPINVOKE.OdDbMentalRayRenderSettings_IsEqual(this.swigCPtr, OdDbMentalRayRenderSettings.getCPtr(settings));
			if (TD_DbPINVOKE.SWIGPendingException.Pending)
			{
				throw TD_DbPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		private object locker = new object();

		private HandleRef swigCPtr;

		public enum ShadowSamplingMultiplier
		{
			kSamplingMultiplierZero,
			kSamplingMultiplierOneEighth,
			kSamplingMultiplierOneFourth,
			kSamplingMultiplierOneHalf,
			kSamplingMultiplierOne,
			kSamplingMultiplierTwo
		}
	}
}
